package com.linq.cool.sdk.controller;

import com.linq.cool.qqbot.myqq.enums.MyQQApiEnum;
import com.linq.cool.qqbot.myqq.response.MyQQResponse;
import com.linq.cool.qqbot.myqq.template.MyQQHttpRequestTemplate;
import com.linq.cool.sdk.core.R;
import com.linq.cool.sdk.request.myqq.MyQQApiGetFriendListRequest;
import com.linq.cool.sdk.request.myqq.MyQQApiPBGroupNoticeRequest;
import com.linq.cool.sdk.request.myqq.MyQQApiSendMsgExRequest;
import lombok.RequiredArgsConstructor;
import org.springframework.web.bind.annotation.*;

/**
 * @author: yqlin
 * @date: 2021/7/2 23:49
 * @description:
 */
@SuppressWarnings("unchecked")
@RestController
@RequestMapping("/test")
@RequiredArgsConstructor
public class TestController {
    private final MyQQHttpRequestTemplate myQQHttpRequestTemplate;

    @PostMapping("/sendMessage")
    public R<?> sendMessage(@RequestBody MyQQApiSendMsgExRequest request) {
        MyQQResponse myQQResponse = myQQHttpRequestTemplate.doRequest(request, MyQQApiSendMsgExRequest.class);
        return R.ok(myQQResponse);
    }

    @PostMapping("/getFriendList")
    public R<?> getFriendList(@RequestBody MyQQApiGetFriendListRequest request) {
        MyQQResponse myQQResponse = myQQHttpRequestTemplate.doRequest(request, MyQQApiGetFriendListRequest.class);
        return R.ok(myQQResponse.getData());
    }

    
    @GetMapping("/getMyQQList")
    public R<?> getMyQQList() {
        MyQQResponse myQQResponse = myQQHttpRequestTemplate.doRequest(MyQQApiEnum.API_GET_QQ_LIST);
        return R.ok(myQQResponse.getData());
    }

    @GetMapping("/getApiGetVer")
    public R<?> getApiGetVer() {
        MyQQResponse myQQResponse = myQQHttpRequestTemplate.doRequest(MyQQApiEnum.API_GET_VER);
        return R.ok(myQQResponse.getData());
    }

    /**
     * 获取时间戳
     */
    @GetMapping("/getApiGetTimeStamp")
    public R<?> getApiGetTimeStamp() {
        MyQQResponse myQQResponse = myQQHttpRequestTemplate.doRequest(MyQQApiEnum.API_GET_TIME_STAMP);
        return R.ok(myQQResponse.getData());

    }

    /**
     * 在监控器上打印信息
     */
    @GetMapping("/getApiOutPut/{content}")
    public R<?> getApiOutPut(@PathVariable("content") String content) {
        MyQQResponse myQQResponse = myQQHttpRequestTemplate.doRequest(MyQQApiEnum.API_OUT_PUT, content);
        return R.ok(myQQResponse.getData());
    }

    /**
     * 管理员发布公告
     */
    @PostMapping("/sendApiPBGroupNotice")
    public R<?> sendApiPBGroupNotice(@RequestBody MyQQApiPBGroupNoticeRequest request) {
        MyQQResponse myQQResponse = myQQHttpRequestTemplate.doRequest(request, MyQQApiPBGroupNoticeRequest.class);
        if (myQQResponse.getSuccess()) {
            return R.ok();
        }
        return R.fail();
    }

    /**
     * Api_AddQQ	布尔型	向框架帐号列表添加一个Q.当该Q已存在时则覆盖密码
     * 帐号	文本型	机器人QQ
     * 密码	文本型	机器人密码
     * Api_DelQQ	无返回值	删除框架帐号列表内指定QQ，不可在执行登录过程中删除QQ否则有几率引起错误
     * 响应QQ	文本型	机器人QQ
     * Api_Login	布尔型	登录指定QQ，应确保QQ号码在列表中已存在
     * 响应QQ	文本型	机器人QQ
     * Api_Logout	无返回值	令指定QQ下线，应确保QQ号码已在列表中且在线
     * 响应QQ	文本型	机器人QQ
     */
    @PostMapping("/addQQ")
    public R<?> addQQ() {
        return R.ok();
    }
}
